/**
 * 接8.2
 * 1. 如果想在Customer中加入信用等级、地址之类的信息，现在还做不到，因为目前的Customer还是作为值对象对待的，
 *    每个Order对象都拥有自己的Customer对象。为了给Customer加入信用等级、地址之类的信息，我必须运用ChangeValueToReference
 *    ，这么一来，属于同一客户的所有Order对象就可以共享同一个Customer对象了
 *    你可能会希望给这个对象加入一些可修改数据，并确保对任何一个对象的修改都能影响到所有引用此一对象的地方。这时候你就需要将
 *    这个对象变为引用对象。
 *
 *    在Customer类中定义一个工厂方法，把原本调用构造函数的地方改为工厂方法，再把构造函数声明为private
 *
 * 2. 现在必须决定如何访问Customer对象,作者比较喜欢通过另一个对象（例如Order）来访问它。但本例并没有这样一个明显的字段可用于访问
 * Customer对象。这种情况下，作者一般会创建一个注册表来保存所有的Customer对象，为了简化代码，将注册表在Customer中定义为static
 *
 */
package chapter08.chapter8_3_ChangeValueToReference.ver02;